Automatic transaction machines are known in the prior art. A common type of automated transaction machine used by consumers is an automated teller machine (“ATM”). ATMs enable customers to carry out banking transactions. Common banking transactions that may be carried out with ATMs include the dispensing of cash, the making of deposits, the transfer of funds between accounts, the payment of bills and account balance inquiries. Other types of automated transaction machines may allow customers to charge against accounts or to transfer funds. Other types of automated transaction machines may print or dispense items of value such as coupons, tickets, wagering slips, vouchers, checks, food stamps, money orders, scrip or travelers checks. The types of banking transactions a customer can carry out are determined by the capabilities of the particular transaction machine and the programming of the institution operating the machine. For purposes of this disclosure an automated transaction machine shall encompass any device which carries out transactions including transfers of value.
Currently ATMs are created with specialized hardware and software dedicated for a specific set of operations. Typically the software for controlling an ATM is created to only work with a specific type of ATM. ATMs with different types of configurations of transaction function devices such as sheet dispensers or deposit mechanisms, in many cases use different programs specifically developed for those devices or for the particular configuration of machine. Even ATM models of the same type may require different versions of the controlling software depending on the human language that is needed for the user interface. Thus, the more permutations of hardware and program functionality that are required, the more dedicated programs must be written. Furthermore, even if a program could be written that is capable of controlling many different types of ATMs with outputs in a wide range of human languages, this program would still not run on any ATM that uses hardware or an operating system that is incompatible with the machine code that the program was compiled into. The program at best must be recompiled for the target hardware and at worst must be completely rewritten in a computer language that is specific to the hardware.
Consequently there exists a need for a programming scheme that will flexibly port to many different types of automated transaction machines without limiting the types of hardware that can be used for the ATMs. There further exists a need to be able to easily modify a behavior of ATM programs after they are written without the need to recompile. There further exists a need to isolate or decouple the hardware specific software components from the more generic human interface software components in an ATM. Thus when changes need to be made to the user interface, the hardware specific software components do not also need to be modified. Likewise when the hardware specific software is modified the user interface does not always need to be modified. There also exists a need to simplify the programming of the human user interface without limiting the breadth of programming options available for creating the hardware specific software components.